Telegram Group & Telegram Channel
Note #24 Go и runtime
Существует много споров на тему Go рантайм и Go пакета runtime. Давайте разберемся с этим вопросом.

C одной стороны в Go есть рантайм, который написан на Go в отличии от Java(написан на С). C точки зрения архитектуры, рантайм - это просто коллекция нескольких уникальных частей, самые важные из которых: сборщик мусора и планировщик горутин (goroutine scheduler).

С другой стороны, Go рантайм также реализует фичи, которые экспортируются наружу c помощью пакета runtime. C помощью пакета runtime можно осуществлять управление сборщиком мусора и выводить различную дебаг информация см (runwww.tg-me.com/debug).
Либо вывести сколько памяти занимает ваша программа:

package main

import (
"runtime"
"fmt"
"time"
)

func PrintMememoryStats() {
var m runtime.MemStats
// The returned memory allocator statistics are up to date as of the call to ReadMemStats. This is in contrast with a heap profile, which is a snapshot as of the most recently completed garbage collection cycle.
runtime.ReadMemStats(&m)
fmt.Printf("Alloc = %v Mb", m.Alloc / 1024 / 1024)
fmt.Printf(" TotalAlloc = %v Mb", m.TotalAlloc / 1024 / 1024)
fmt.Printf(" Sys = %v Mb", m.Sys / 1024 / 1024)
fmt.Printf(" NumGC = %v\n", m.NumGC)
}
func main() {
PrintMememoryStats()
var total [][]int

for i := 0; i<3; i++ {
array := make([]int, 0, 4200000)
total = append(total, array)
PrintMememoryStats()
time.Sleep(time.Second)
}
PrintMememoryStats()
runtime.GC()
PrintMememoryStats()
}

Note: Также важно понимать, что Go рантайм не включает в себя виртуальную машину, а код программы на Go компилируется сразу в машинный код, кстати это позволяет нам так легко писать программы, которые легко портируются на разные ОС. Поэтому в контексте Go - когда говорят Go и runtime - это обычно имя пакета, а не виртуальное окружение в котором программа на Go запускается.



tg-me.com/golang_for_two/49
Create:
Last Update:

Note #24 Go и runtime
Существует много споров на тему Go рантайм и Go пакета runtime. Давайте разберемся с этим вопросом.

C одной стороны в Go есть рантайм, который написан на Go в отличии от Java(написан на С). C точки зрения архитектуры, рантайм - это просто коллекция нескольких уникальных частей, самые важные из которых: сборщик мусора и планировщик горутин (goroutine scheduler).

С другой стороны, Go рантайм также реализует фичи, которые экспортируются наружу c помощью пакета runtime. C помощью пакета runtime можно осуществлять управление сборщиком мусора и выводить различную дебаг информация см (runwww.tg-me.com/debug).
Либо вывести сколько памяти занимает ваша программа:

package main

import (
"runtime"
"fmt"
"time"
)

func PrintMememoryStats() {
var m runtime.MemStats
// The returned memory allocator statistics are up to date as of the call to ReadMemStats. This is in contrast with a heap profile, which is a snapshot as of the most recently completed garbage collection cycle.
runtime.ReadMemStats(&m)
fmt.Printf("Alloc = %v Mb", m.Alloc / 1024 / 1024)
fmt.Printf(" TotalAlloc = %v Mb", m.TotalAlloc / 1024 / 1024)
fmt.Printf(" Sys = %v Mb", m.Sys / 1024 / 1024)
fmt.Printf(" NumGC = %v\n", m.NumGC)
}
func main() {
PrintMememoryStats()
var total [][]int

for i := 0; i<3; i++ {
array := make([]int, 0, 4200000)
total = append(total, array)
PrintMememoryStats()
time.Sleep(time.Second)
}
PrintMememoryStats()
runtime.GC()
PrintMememoryStats()
}

Note: Также важно понимать, что Go рантайм не включает в себя виртуальную машину, а код программы на Go компилируется сразу в машинный код, кстати это позволяет нам так легко писать программы, которые легко портируются на разные ОС. Поэтому в контексте Go - когда говорят Go и runtime - это обычно имя пакета, а не виртуальное окружение в котором программа на Go запускается.

BY 🇺🇦 Go for two :)


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golang_for_two/49

View MORE
Open in Telegram


🇺🇦 Go на двоих Telegram | DID YOU KNOW?

Date: |

Telegram today rolling out an update which brings with it several new features.The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations.

🇺🇦 Go на двоих from sg


Telegram 🇺🇦 Go for two :)
FROM USA